package com.ray.common.util;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import java.lang.reflect.Type;
import com.google.gson.Gson;
import com.google.gson.JsonObject;
import com.google.gson.reflect.TypeToken;
public class GsonUtil {
	 
	 public static Object getInstanceByJson(Class<?> clazz, String json)
	    {
	        Object obj = null;
	        Gson gson = new Gson();
	        obj = gson.fromJson(json, clazz);
	        return obj;
	    }

	    /**
	     * @author I321533
	     * @param json
	     * @param clazz
	     * @return
	     */
	    public static <T> List<T> jsonToList(String json, Class<T[]> clazz)
	    {
	        Gson gson = new Gson();
	        T[] array = gson.fromJson(json, clazz);
	        return Arrays.asList(array);
	    }

	    /**
	     * @param json
	     * @param clazz
	     * @return
	     */
	    public static <T> ArrayList<T> jsonToArrayList(String json, Class<T> clazz)
	    {
	        Type type = new TypeToken<ArrayList<JsonObject>>()
	        {}.getType();
	        ArrayList<JsonObject> jsonObjects = new Gson().fromJson(json, type);

	        ArrayList<T> arrayList = new ArrayList<>();
	        for (JsonObject jsonObject : jsonObjects)
	        {
	            arrayList.add(new Gson().fromJson(jsonObject, clazz));
	        }
	        return arrayList;
	    }
}
